/*
 * (C) 2009, Elephant Seven Hamburg Gmbh, 
 * Author: Detlev Wiese
 * 
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not 
 * use this file except in compliance with the License. You may obtain a copy 
 * of the License at
 *  
 *     http://www.apache.org/licenses/LICENSE-2.0 
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.se and its accompanying notice file is
 * included with the distribution. 
 */ 
package com.e7.streams;

import java.util.Arrays;


/**
 * This class appends a single element to the end of some 
 * stream.
 * @param <E> - The type of the elements of the stream and 
 * as well of the element appended.
 */
public class AppendElementStream<E> extends ConcatenatedStream<E>{
	
	/**
	 * Create an instance!
	 * @param element The single stream element to be appended to 
	 * the stream given
	 * @param stream The stream to which a single element is appended
	 */
	@SuppressWarnings("unchecked")
	public AppendElementStream(E element, Stream<E> stream) {
		super(Arrays.asList(stream, new SingleElementStream<E>(element)));
	}
	
	/**
	 * Syntactic sugar only. 
	 * See {@link AppendElementStream#AppendElementStream(Object, Stream)}. 
	 */
	public AppendElementStream(Stream<E> stream, E element) {
		this(element, stream);
	}
}
